package jdbc;

// 查询数据库中的数据

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class JdbcSelect {
    public static void main(String[] args) throws SQLException {
        // 创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/testbit?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("Xianmeng");

        // 连接建立
        Connection connection = dataSource.getConnection();

        // 构造SQL + 预处理
        Scanner in = new Scanner(System.in);
        System.out.println("输入不想要查询的名字：");
        String name1 = in.nextLine();

        String sql = "select * from students where name != ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,name1);
        //statement.setString(1,"张三"); // 如果在此处直接给定 那就相当于固定给了这个条件（输入无效！）
        System.out.println("statement:" + statement);

        // 执行sql:返回类型是ResultSet，也就是“结果集 实际上是一个”表“（一个表很多行，一行很多列）
        ResultSet resultSet = statement.executeQuery();

        // 遍历结果集合：
        while (resultSet.next()) {
            // 获取每一行，一行又有很多列
            // resultSet.getXXX的参数可以是列名，但是同样是从1开始
            String name = resultSet.getString("name");
            int age = resultSet.getInt("age");
            System.out.println("name="+name + " age=" +age);
        }

        // 关闭释放
        resultSet.close(); // 也要释放！！
        statement.close();
        connection.close();
    }
}
